package ru.compft.common.services;

import org.springframework.transaction.annotation.Transactional;
import ru.compft.common.data.Dictionary;
import ru.compft.common.data.Term;

import java.util.List;

/**
 * User: VVasiliev
 * Date: 14.06.12
 * Time: 14:00
 * Сервис работы со словарями
 * По умолчанию все методы только для чтения
 */
@Transactional(readOnly = true)
public interface DictionariesService {
    /**
     * Получение списка всех словарей системы
     *
     * @return
     */
    List<Dictionary> getAllDictionaries();

    /**
     * Получение словарей от определенного индекса (from) и определенного количества (count)
     *
     * @param from
     * @param count
     * @return
     */
    List<Dictionary> getDictionaries(int from, int count);

    /**
     * Подсчитываем все словари в системе
     *
     * @return
     */
    int countAllDictionaries();

    /**
     * Ищем словарь по коду
     *
     * @param code
     * @return
     */
    Dictionary getDictionaryByCode(String code);

    /**
     * Ищем словарь по идентификатору
     *
     * @param id
     * @return
     */
    Dictionary getDictionaryById(Long id);

    /**
     * Получение списка всех терминов системы
     *
     * @return
     */
    List<Term> getAllTerms();

    /**
     * Получение терминов от определенного индекса (from) и определенного количества (count)
     *
     * @param from
     * @param count
     * @return
     */
    List<Term> getTerms(int from, int count);

    /**
     * Подсчитываем все термины в системе
     *
     * @return
     */
    int countAllTerms();

    /**
     * Создание нового термина
     *
     * @param term
     * @return
     */
    boolean createTerm(Term term);
}
